package com.itbaizhan;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.*;

/**ORM编程思想*/
/*ORM简介
* 对象关系映射（英语：Object Relational Mapping，简称ORM，
* 或O/R mapping）是一种为了解决面向对象语言与关系数据库存在的互不匹配
* 的现象。）*/
/*实体类：就是一个定义了属性，拥有getter、setter、无参构造方法（基本必
备）的一个类。实体类可以在数据传输过程中对数据进行封装，相当于一个“工具”、
“容器”、“载体”，能存储、传输数据，能管理数据。*/
/*实体类特点：
实体类名，尽量和数据库中的表名一一对应
实体类中的属性对应数据库表中的字段，相关的命名最好也一一对应
实体类内方法主要有，getter、setter方法，用于设置、获取数据
实体类属性一般为private类型，方法为public类型
实体类应该有，无参、有参构造方法*/
public class ORMTest00 {
    public List<Users> selectUsersAll(){
        /*定义集合*/
        List<Users> list = new ArrayList<>();
        Connection connection = null;
        PreparedStatement ps = null;
        ResultSet resultSet =null;
        try{
            connection = JdbcUtils.getConnection();
            ps = connection.prepareStatement("select * from Users");
            resultSet = ps.executeQuery();
            //当下一行有数据时resultSet.next()会返加true,否则false
            while (resultSet.next()){
                int userid = resultSet.getInt("userid");
                String username = resultSet.getString("username");
                int userage = resultSet.getInt("userage");
                //如果是只有一条数据，则可以在外面实例化实体类
                //ORM的映射处理  手动处理，学到高级框架，可以自动存入
                Users users = new Users();
                users.setUserid(userid);
                users.setUsername(username);
                users.setUsergae(userage);
                //把每次得到的对象放到集合中保存
                list.add(users);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JdbcUtils.closeResource(resultSet,ps,connection);
        }
        //把结果返回
        return list;
    }
}
